Android Studio mysql veritabanı kayıt Türkçe karakter sorunu
Merhabalar arkadaşlar. Başlıktada belirttiğim bir sorunla karşılaştım. Veritabanına kayıt yaparken türkçe karakter yollarsam karakterler bozuk çıkıyor. Aşağıda tüm kodlarımı paylaştım. Yazı biraz uzun zaman lütfen değerli vaktinizden biraz ayırırsanız gerçekten çok mutlu olurum çok yardıma ihtiyacım var. kaydı yapan java kodu ------------------------------- public class kayitoljava extends Fragment implements View.OnClickListener { EditText mail_input,sifre_input,ad_input,soyad_input,araci_input,kullaniciadi_input; CheckBox cb1; String hostsifre,mail,sifre,sonuc,sonucmesaji,ad,soyad,kullaniciadi,araci; String URL_POST= "http://www.denemehosting.xyz/kayit.php"; String hata_mesaji=""; ProgressDialog pDialog; Boolean hata,mecburiyet = false; JSONObject cevap=null; private static final int CUSTOM_DIALOG_ID=2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.kayitollyt, container,false); Button cikis = (Button) view.findViewById(R.id.button6); mail_input = (EditText) view.findViewById(R.id.editText6); cikis.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { buttonClicked(v); } }); return view; } public void buttonClicked (View view) { mail = mail_input.getText().toString();//edittext değerini alıyoruz new girisKontrol().execute(mail); } @Override public void onClick(View view) { } @SuppressLint("StaticFieldLeak") private class girisKontrol extends AsyncTask { String result; protected void onPreExecute() { // progress dialog pDialog = new ProgressDialog(getActivity()); pDialog.setMessage("Giriş Yapılıyor..."); pDialog.setIndeterminate(true); pDialog.setCancelable(false); pDialog.show(); } @Override protected String doInBackground(String... strings) { List params = new ArrayList(); params.add(new BasicNameValuePair("mail", mail)); try { result= postClass.Post(URL_POST,params); } catch (Exception e) { e.printStackTrace(); } return result; } @Override protected void onPostExecute(String s) { pDialog.dismiss(); try { cevap = new JSONObject(s); sonucmesaji = cevap.getString("sonucmesaji"); if (cevap.getString("sonuc") != null) { sonuc = cevap.getString("sonuc"); if(Integer.parseInt(sonuc) == 1){ //Eğer giriş başarılı ise AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create(); alertDialog.setTitle("Kayıt Yapıldı"); alertDialog.setMessage(sonucmesaji); alertDialog.setCancelable(false); alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mail_input.setText(""); } }); alertDialog.show(); } if(Integer.parseInt(sonuc) == 0){// Sonuç başarılı değil ise AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create(); alertDialog.setTitle("Hata"); alertDialog.setMessage(sonucmesaji);//Sonuc mesajıyla bilgilendiriyoruz. alertDialog.setCancelable(false); alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mail_input.setText(""); } }); alertDialog.show(); } } } catch (JSONException e) { e.printStackTrace(); } } } ---------------------------------------------- postclass belki ihtiyacınız olur. ----------------------------------------------- package boran.com.metehan; /** * Created by METEHAN on 25.11.2017. */ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.conn.params.ConnPerRouteBean; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.BufferedHttpEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class postClass { private static HttpClient custHttpClient; public static final int MAX_TOTAL_CONNECTIONS = 1000; public static final int MAX_CONNECTIONS_PER_ROUTE = 1500; public static final int TIMEOUT_CONNECT = 150000; public static final int TIMEOUT_READ = 150000; public static HttpClient getHttpClient() { if (custHttpClient == null) { SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); HttpParams connManagerParams = new BasicHttpParams(); ConnManagerParams.setMaxTotalConnections(connManagerParams, MAX_TOTAL_CONNECTIONS); ConnManagerParams.setMaxConnectionsPerRoute(connManagerParams, new ConnPerRouteBean(MAX_CONNECTIONS_PER_ROUTE)); HttpConnectionParams.setConnectionTimeout(connManagerParams, TIMEOUT_CONNECT); HttpConnectionParams.setSoTimeout(connManagerParams, TIMEOUT_READ); ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(new BasicHttpParams(), schemeRegistry); custHttpClient = new DefaultHttpClient(cm, null); HttpParams para = custHttpClient.getParams(); HttpConnectionParams.setConnectionTimeout(para, (30 * 10000)); HttpConnectionParams.setSoTimeout(para, (30 * 10000)); ConnManagerParams.setTimeout(para, (30 * 10000)); } return custHttpClient; } public static String Post(String urlPostFix, List postedValues) throws Exception { String url = urlPostFix; BufferedReader in = null; try { System.setProperty("http.keepAlive", "false"); HttpClient client = getHttpClient(); HttpPost request = new HttpPost(url); request.setHeader("Accept", "application/json"); request.setHeader("Content-Type", "application/x-www-form-urlencoded"); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postedValues); formEntity.setContentType("application/json"); request.setEntity(formEntity); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); String result = sb.toString(); return result; } finally { if (in != null) { try { in.close(); } catch (IOException e) { } } } } public static String Get(String urlPostFix) throws Exception { String url = urlPostFix; BufferedReader in = null; try { HttpClient client = getHttpClient(); HttpGet request = new HttpGet(url); request.setHeader("Accept", "application/json"); request.setHeader("Content-Type", "application/x-www-form-urlencoded"); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); String result = sb.toString(); return result; } finally { if (in != null) { try { in.close(); } catch (IOException e) { } } } } public static Bitmap executeImageGet(String urlPostFix) throws Exception { String url = urlPostFix; InputStream in = null; try { HttpClient client = getHttpClient(); HttpGet request = new HttpGet(url); HttpResponse response = client.execute(request); HttpEntity entity = response.getEntity(); BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); in = bufHttpEntity.getContent(); Bitmap bitmap = BitmapFactory.decodeStream(in); in.close(); return bitmap; } finally { if (in != null) { try { in.close(); } catch (IOException e) { } } } } } ---------------------------------------------- php kodum -------------------------------------------------- <?php $DB_USER='u24354353445_mete0'; $DB_PASS='34543444'; $DB_HOST='localhost'; $DB_NAME='u24354353445_mete0'; $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } if($_POST){ $email = $_POST["mail"]; if (filter_var($email,FILTER_VALIDATE_EMAIL)) { $hata =false; } else { $hata =true; $sonucmesaji = "Mail adresi geçersiz"; } $mysqli->query("SET NAMES UTF8"); $mysqli->query("SET CHARACTER SET utf8"); if(!$hata){ $sql="INSERT INTO musteri (mail) VALUES ('$email')"; $sonuc=$mysqli->query($sql); if ($sonuc==0) { $sonucmesaji = "Kayıt sırasında bir hata olustu"; $cevap = array('sonuc' => "0", 'sonucmesaji' => $sonucmesaji); } else { $sonucmesaji = "Kayıt İşleminiz Başarıyla Sonuçlandı"; $cevap = array('sonuc' => "1", 'sonucmesaji' => $sonucmesaji); } $mysqli->close(); }else{ $cevap = array('sonuc' => "0",'sonucmesaji' => $sonucmesaji); } echo json_encode($cevap); } ?> ---------------------------------------------------------------- Veritabanın utf8 turkish ci fakat şöyle bir durum var sorun veritabanından değil çünkü aşağıdaki html kod ile post yaparak denedim sıkıntı çıkmıyor ----------------------------------------------------- -------------------------------------------- yani sorun android studio nun post etmesinden kaynaklı. Ayrıca mail adresinde zaten türkçe karakter girince (örneğin meteşan@gmail.com) zaten mail adresinin geçerliliğini kontrol ederken hata vermesi ve kayıt yapmaması gerek. ( html koda bu maili girdiğimde mail kontrolünden geçmiyor bu nedenle kayıt yapmıyor. ) fakat android studioda karakter direk posttan bozuk karakterle geliyor olacakki zaten postun içinde mail adresinin yapısı değişmiş oluyor mail adresi kontrol sorgusuna böyle girip geçiyor ve kayda giriyor haliyle bozuk karakterle kayıt yapıyor. Hal böyle arkadaşlar biraz uzun oldu kusura bakmayın ama gerçekten günlerdir uğraşıyorum artık çok bunaldım. Lütfen yardım edin…